<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>


    <script>
        // 1. for...in
        // 题目：给定一个对象 `person = {name: "Alice", age: "25", city: "New York"}`, 使用 for...in 获取并打印出所有属性名和对应的值。
        const person = { name: "Alice", age: "25", city: "New York" }
        for (const key in person) {
            console.log(`${key}:${person[key]}`);
        }

        // 2. for...of 
        // 题目：给定一个字符串数组 `words = ["apple", "banana", "cherry"]`, 使用 for...of 获取每个字符串并打印出其长度。 
        const words = ["apple", "banana", "cherry"]
        for (const element of words) {
            console.log(element);
            console.log(element.length);
        }

        // 3. forEach() 
        // 题目：给定一个数字数组 `numbers = [10,20,30,40]`, 使用 forEach() 将每个数字乘以2，并打印出结果。 
        const numbers = [10, 20, 30, 40]
        numbers.forEach(item => {
            let sum = item * 2
            console.log(sum);
        })

        // 4. map() 
        // 题目：给定一个价格数组 `prices = [50,80,120]`, 使用 map() 添加百分之十的增值税，并返回新价格组成新数组打印出来。 
        let newarr = []
        const prices = [50, 80, 120]
        prices.map((item) => {
            item += item * 0.1
            return newarr.push(item)
        })
        console.log(newarr);

        // 5. filter() 
        // 题目：给定一个年龄数组 `ages = [18,25,30,45,50]`, 使用 filter() 获取年龄大于等于30岁的数据并打印出来。 
        const ages = [18, 25, 30, 45, 50]
        let newage = ages.filter(item => item >= 30)
        console.log(newage);

        // 6. some() 
        // 题目：给定一个成绩数组 `scores = [85,90,70,65]`, 使用 some() 判断是否存在成绩大于等于90分的数据，并打印出判断结果(true/false)。 
        const scores = [85, 90, 70, 65]
        let nosorces = scores.some(item => item >= 90)
        console.log(nosorces);

        // 7. every() 
        // 题目：给定一个数字数组 `nums = [2,4,6,8]`, 使用 every() 判断是否所有数字都是偶数，并打印出判断结果(true/false)。 
        const nums = [2, 4, 6, 8]
        let newnums = nums.every(item => item % 2 == 0)
        console.log(newnums);

        // 8. reduce() 
        // 题目：给定一个购物车商品价格数组 `cartPrices = [25.50,30.00,18.99]`, 使用 reduce()计算购物车商品总价并打印出来。
        const cartPrices = [25.50, 30.00, 18.99]
        let sum = cartPrices.reduce((item, redu) => item + redu, 0)
        console.log(sum);

        const orders = [
            { product: "iPhone", quantity: 5, pricePerUnit: 800 },
            { product: "iPad", quantity: 3, pricePerUnit: 500 },
            { product: "MacBook", quantity: 2, pricePerUnit: 1500 }
        ];

        // 先计算总销售额
        const totalSales = orders.reduce((total, order) => total + order.quantity * order.pricePerUnit, 0);

        // 然后使用总销售额来计算每个订单的百分比
        const salesPercentages = orders.map(order => {
            const salesPercentage = ((order.quantity * order.pricePerUnit) / totalSales) * 100;
            return {
                ...order,
                salesPercentage: parseFloat(salesPercentage.toFixed(2)) // 使用 parseFloat 和 toFixed 来处理百分比的显示
            };
        });

        console.log("Total Sales:", totalSales);
        console.log("Sales Percentages:", salesPercentages);

    </script>
</body>

</html>